Data is from August, 2017 sequencing. This is week 4 of experiment 1

Download and map:

Working on Whitney for read mapping. Directory: /Network/Servers/avalanche.plb.ucdavis.edu/Volumes/Mammoth/Users/jmaloof/2017/Wyoming-microbiome/20170830-data/

20170830 reads

Build index (not done…already exists)

cd ~/Sequences/ref_genomes/B_rapa/genome/V3.0

wget http://brassicadb.org/brad/datasets/pub/BrassicaceaeGenome/Brassica_rapa/V3.0/Brapa_genome_v3.0_cds.fasta.gz 

kallisto index -i B_rapa_CDS_V3.0_k31_kallisto_index Brapa_genome_v3.0_cds.fasta.gz

cd ~/2017/Wyoming-microbiome//20170830-samples/20170830-data

Map reads

mkdir kallisto_out_V3.0

#actually a fish loop
for file in (ls raw-fastq/2017-08-27/*.fastq.gz)
  echo $file
  set newfile (basename $file _R1_001.fastq.gz)
  kallisto quant -i ~/Sequences/ref_genomes/B_rapa/genome/V3.0/B_rapa_CDS_V3.0_k31_kallisto_index  -o kallisto_out_V3.0/$newfile --single -l 200 -s 40 -t 4 --plaintext $file
end

Move the counts to my local computer

cd /Users/jmaloof/git/Br_Microbe_Paper_2021/RNA/input/20170830-samples
lftp sftp://whitney.plb.ucdavis.edu
  cd 2017/Wyoming-microbiome/20170830-samples/20170830-data
  mirror kallisto_out_V3.0

remove unused files

cd /Users/jmaloof/git/Br_Microbe_Paper_2021/RNA/input/20170830-samples/kallisto_out_V3.0
rm */*.json

compress tsv files

cd /Users/jmaloof/git/Br_Microbe_Paper_2021/RNA/input/20170830-samples/kallisto_out_V3.0
gzip */abundance.tsv

Get counts into R

library(tidyverse)
library(stringr)
library(edgeR)
kallisto_files <- dir(path = "../../input/20170830-samples/kallisto_out_V3.0",pattern="abundance.tsv",recursive = TRUE,full.names = TRUE)
kallisto_names <- str_split(kallisto_files,"/",simplify=TRUE)[,6]
head(kallisto_names)
[1] "wyo_leaf_R500_10_417_S65_L001" "wyo_leaf_R500_10_417_S65_L002" "wyo_leaf_R500_10_417_S65_L003"
[4] "wyo_leaf_R500_10_417_S65_L004" "wyo_leaf_R500_10_419_S66_L001" "wyo_leaf_R500_10_419_S66_L002"
counts <- tibble(sample = kallisto_names, file = kallisto_files) %>%
  mutate(countdata = map(kallisto_files, read_tsv)) %>%
  select(-file)

── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  target_id = col_character(),
  length = col_double(),
  eff_length = col_double(),
  est_counts = col_double(),
  tpm = col_double()
)
head(counts)

reformat into rows = genes and columns = samples

counts <- counts %>% unnest(countdata) %>%
  mutate(sample = str_remove(sample, "_L.*")) %>% 
  select(sample, target_id, est_counts) %>%
  group_by(sample, target_id) %>%
  summarize(est_counts=sum(est_counts)) %>% # sum up counts from multiple lanes
  ungroup() %>%
  pivot_wider(id_cols = target_id,
              names_from = sample,
              values_from = est_counts)
`summarise()` has grouped output by 'sample'. You can override using the `.groups` argument.
head(counts)
dim(counts)
[1] 46250    25
write_csv(counts,"../../output/20170830_V3.0_raw_counts_.csv.gz")

make sample description data frame

summarize counts

pl.orig <- counts[,-1] %>% colSums() %>% tibble(sample=names(.),count=.) %>%
  ggplot(aes(x=sample,y=count)) + 
  geom_col() +
  theme(axis.text.x  = element_text(angle=90, vjust=0.5,size = 7)) 
pl.orig

load to edgeR, normalize

#confirm that everthing is in the right order
all(colnames(counts)[-1]==sample.description$sample)
[1] TRUE
dge <- DGEList(counts[,-1],
               group=sample.description$group,
               samples=sample.description,
               genes=counts$target_id)
dge <- calcNormFactors(dge)
barplot(dge$samples$lib.size)

ggplot(dge$samples,aes(x=sample,y=norm.factors,fill=tissue)) + geom_col() + 
  theme(axis.text.x  = element_text(angle=90, vjust=0.5,size = 7)) 

ggplot(dge$samples,aes(x=sample,y=norm.factors,fill=genotype)) + geom_col() + 
  theme(axis.text.x  = element_text(angle=90, vjust=0.5,size = 7)) 

ggplot(dge$samples,aes(x=sample,y=norm.factors,fill=as.factor(block))) + geom_col() +
  theme(axis.text.x  = element_text(angle=90, vjust=0.5,size = 7)) 

do separately for leaf and root values

counts.leaf <- counts %>% select(target_id, contains("leaf"))
counts.root <- counts %>% select(target_id, contains("root"))
sample.description.leaf <- sample.description %>% filter(tissue=="leaf")
sample.description.root <- sample.description %>% filter(tissue=="root")

Leaf

#confirm that everthing is in the right order
all(colnames(counts.leaf)[-1]==sample.description.leaf$sample)
[1] TRUE
dge.leaf <- DGEList(counts.leaf[,-1],
                    group=sample.description.leaf$group,
                    samples=sample.description.leaf,
                    genes=counts.leaf$target_id)
dge.leaf <- calcNormFactors(dge.leaf)

Root

#confirm that everthing is in the right order
all(colnames(counts.root)[-1]==sample.description.root$sample)
[1] TRUE
dge.root <- DGEList(counts.root[,-1],
                    group=sample.description.root$group,
                    samples=sample.description.root,
                    genes=counts.root$target_id)
dge.root <- calcNormFactors(dge.root)
save(dge.leaf,dge.root,sample.description.leaf,sample.description.root,file="../../output/edgeR_dge_objects_exp1_week4.Rdata")

Write out cpm values

cpm.leaf.w <- bind_cols(dge.leaf$gene,as_tibble(cpm(dge.leaf))) %>% as_tibble() %>% rename(transcript_ID=genes)
head(cpm.leaf.w)
write_csv(cpm.leaf.w,"../../output/cpm_wide_exp1_week4_leaf_samples.csv.gz")
cpm.root.w <- bind_cols(dge.root$gene,as_tibble(cpm(dge.root))) %>% as_tibble() %>% rename(transcript_ID=genes)
head(cpm.root.w)
write_csv(cpm.root.w,"../../output/cpm_wide_exp1_week4_root_samples.csv.gz")

Also let’s reformat this to long format and add metadata

cpm.leaf.long <- cpm.leaf.w %>% 
  gather(-transcript_ID,key = sample,value=cpm) %>%
  left_join(sample.description.leaf)
Joining, by = "sample"
head(cpm.leaf.long)
write_csv(cpm.leaf.long,"../../output/cpm_long_with_metadata_exp1_week4_leaf_samples.csv.gz")
cpm.root.long <- cpm.root.w %>% 
  gather(-transcript_ID,key = sample,value=cpm) %>%
  left_join(sample.description.root)
Joining, by = "sample"
head(cpm.root.long)
write_csv(cpm.root.long,"../../output/cpm_long_with_metadata_exp1_week4_root_samples.csv.gz")

compute and write out voom-transformed values

design.leaf <- model.matrix(~ sample.description.leaf$group)
dge4voom.leaf <- dge.leaf[rowSums(cpm(dge.leaf)>1) >= 6,,keep.lib.sizes=FALSE]
dge4voom.leaf <- calcNormFactors(dge4voom.leaf)
data.voom.leaf <- voom(dge4voom.leaf,design = design.leaf)
data.voom.exp.leaf <- bind_cols(data.voom.leaf$genes,as_tibble(data.voom.leaf$E)) %>%
  rename(transcript_ID=genes) %>% as_tibble()
head(data.voom.exp.leaf)
write_csv(data.voom.exp.leaf, "../../output/voom_expression_exp1_week4_T6_leaf_samples.csv.gz")
voom.long.leaf <- data.voom.exp.leaf %>% 
  gather(-transcript_ID,key = sample,value=expression) %>%
  left_join(sample.description.leaf)
Joining, by = "sample"
head(voom.long.leaf)
hist(voom.long.leaf$expression)

write_csv(voom.long.leaf,"../../output/voom_long_with_metadata_exp1_week4_T6_leaf_samples.csv.gz")
design.root <- model.matrix(~ sample.description.root$group)
dge4voom.root <- dge.root[rowSums(cpm(dge.root)>1) >= 6,,keep.lib.sizes=FALSE]
dge4voom.root <- calcNormFactors(dge4voom.root)
data.voom.root <- voom(dge4voom.root,design = design.root)
data.voom.exp.root <- bind_cols(data.voom.root$genes,as_tibble(data.voom.root$E)) %>%
  rename(transcript_ID=genes) %>% as_tibble()
head(data.voom.exp.root)
write_csv(data.voom.exp.root, "../../output/voom_expression_exp1_week4_T6_root_samples.csv.gz")
voom.long.root <- data.voom.exp.root %>% 
  gather(-transcript_ID,key = sample,value=expression) %>%
  left_join(sample.description.root)
Joining, by = "sample"
head(voom.long.root)
hist(voom.long.root$expression)

write_csv(voom.long.root,"../../output/voom_long_with_metadata_exp1_week4_T6_root_samples.csv.gz")
LS0tCnRpdGxlOiAiUk5BIGV4cHJlc3Npb24gYW5hbHlzaXMgb2YgQnJhc3NpY2EgTWljcm9iZSBEYXRhLiBJOiBwcmVwIGRhdGEiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCkRhdGEgaXMgZnJvbSBBdWd1c3QsIDIwMTcgc2VxdWVuY2luZy4gIFRoaXMgaXMgd2VlayA0IG9mIGV4cGVyaW1lbnQgMQoKIyMgRG93bmxvYWQgYW5kIG1hcDoKCldvcmtpbmcgb24gV2hpdG5leSBmb3IgcmVhZCBtYXBwaW5nLiAgRGlyZWN0b3J5OiBgL05ldHdvcmsvU2VydmVycy9hdmFsYW5jaGUucGxiLnVjZGF2aXMuZWR1L1ZvbHVtZXMvTWFtbW90aC9Vc2Vycy9qbWFsb29mLzIwMTcvV3lvbWluZy1taWNyb2Jpb21lLzIwMTcwODMwLWRhdGEvYAoKIyMjIDIwMTcwODMwIHJlYWRzCgpCdWlsZCBpbmRleCAobm90IGRvbmUuLi5hbHJlYWR5IGV4aXN0cykKYGBge3IsIGVuZ2luZT0nYmFzaCcsIGV2YWw9RkFMU0V9CmNkIH4vU2VxdWVuY2VzL3JlZl9nZW5vbWVzL0JfcmFwYS9nZW5vbWUvVjMuMAoKd2dldCBodHRwOi8vYnJhc3NpY2FkYi5vcmcvYnJhZC9kYXRhc2V0cy9wdWIvQnJhc3NpY2FjZWFlR2Vub21lL0JyYXNzaWNhX3JhcGEvVjMuMC9CcmFwYV9nZW5vbWVfdjMuMF9jZHMuZmFzdGEuZ3ogCgprYWxsaXN0byBpbmRleCAtaSBCX3JhcGFfQ0RTX1YzLjBfazMxX2thbGxpc3RvX2luZGV4IEJyYXBhX2dlbm9tZV92My4wX2Nkcy5mYXN0YS5negoKY2Qgfi8yMDE3L1d5b21pbmctbWljcm9iaW9tZS8vMjAxNzA4MzAtc2FtcGxlcy8yMDE3MDgzMC1kYXRhCmBgYAoKTWFwIHJlYWRzCgpgYGB7ciwgZW5naW5lPSdiYXNoJyxldmFsPUZBTFNFfQpta2RpciBrYWxsaXN0b19vdXRfVjMuMAoKI2FjdHVhbGx5IGEgZmlzaCBsb29wCmZvciBmaWxlIGluIChscyByYXctZmFzdHEvMjAxNy0wOC0yNy8qLmZhc3RxLmd6KQogIGVjaG8gJGZpbGUKICBzZXQgbmV3ZmlsZSAoYmFzZW5hbWUgJGZpbGUgX1IxXzAwMS5mYXN0cS5neikKICBrYWxsaXN0byBxdWFudCAtaSB+L1NlcXVlbmNlcy9yZWZfZ2Vub21lcy9CX3JhcGEvZ2Vub21lL1YzLjAvQl9yYXBhX0NEU19WMy4wX2szMV9rYWxsaXN0b19pbmRleCAgLW8ga2FsbGlzdG9fb3V0X1YzLjAvJG5ld2ZpbGUgLS1zaW5nbGUgLWwgMjAwIC1zIDQwIC10IDQgLS1wbGFpbnRleHQgJGZpbGUKZW5kCmBgYAoKTW92ZSB0aGUgY291bnRzIHRvIG15IGxvY2FsIGNvbXB1dGVyCgpgYGB7ciwgZW5naW5lPSdiYXNoJywgZXZhbD1GQUxTRX0KY2QgL1VzZXJzL2ptYWxvb2YvZ2l0L0JyX01pY3JvYmVfUGFwZXJfMjAyMS9STkEvaW5wdXQvMjAxNzA4MzAtc2FtcGxlcwpsZnRwIHNmdHA6Ly93aGl0bmV5LnBsYi51Y2RhdmlzLmVkdQogIGNkIDIwMTcvV3lvbWluZy1taWNyb2Jpb21lLzIwMTcwODMwLXNhbXBsZXMvMjAxNzA4MzAtZGF0YQogIG1pcnJvciBrYWxsaXN0b19vdXRfVjMuMApgYGAKCnJlbW92ZSB1bnVzZWQgZmlsZXMKYGBge3IsIGVuZ2luZT0nYmFzaCcsIGV2YWw9RkFMU0V9CmNkIC9Vc2Vycy9qbWFsb29mL2dpdC9Ccl9NaWNyb2JlX1BhcGVyXzIwMjEvUk5BL2lucHV0LzIwMTcwODMwLXNhbXBsZXMva2FsbGlzdG9fb3V0X1YzLjAKcm0gKi8qLmpzb24KYGBgCgpjb21wcmVzcyB0c3YgZmlsZXMKYGBge3IsIGVuZ2luZT0nYmFzaCcsIGV2YWw9RkFMU0V9CmNkIC9Vc2Vycy9qbWFsb29mL2dpdC9Ccl9NaWNyb2JlX1BhcGVyXzIwMjEvUk5BL2lucHV0LzIwMTcwODMwLXNhbXBsZXMva2FsbGlzdG9fb3V0X1YzLjAKZ3ppcCAqL2FidW5kYW5jZS50c3YKYGBgCgoKIyMgR2V0IGNvdW50cyBpbnRvIFIKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGVkZ2VSKQpgYGAKCgoKYGBge3J9CmthbGxpc3RvX2ZpbGVzIDwtIGRpcihwYXRoID0gIi4uLy4uL2lucHV0LzIwMTcwODMwLXNhbXBsZXMva2FsbGlzdG9fb3V0X1YzLjAiLHBhdHRlcm49ImFidW5kYW5jZS50c3YiLHJlY3Vyc2l2ZSA9IFRSVUUsZnVsbC5uYW1lcyA9IFRSVUUpCmthbGxpc3RvX25hbWVzIDwtIHN0cl9zcGxpdChrYWxsaXN0b19maWxlcywiLyIsc2ltcGxpZnk9VFJVRSlbLDZdCmhlYWQoa2FsbGlzdG9fbmFtZXMpCmBgYAoKYGBge3J9CmNvdW50cyA8LSB0aWJibGUoc2FtcGxlID0ga2FsbGlzdG9fbmFtZXMsIGZpbGUgPSBrYWxsaXN0b19maWxlcykgJT4lCiAgbXV0YXRlKGNvdW50ZGF0YSA9IG1hcChrYWxsaXN0b19maWxlcywgcmVhZF90c3YpKSAlPiUKICBzZWxlY3QoLWZpbGUpCgpoZWFkKGNvdW50cykKYGBgCgpyZWZvcm1hdCBpbnRvIHJvd3MgPSBnZW5lcyBhbmQgY29sdW1ucyA9IHNhbXBsZXMKYGBge3J9CmNvdW50cyA8LSBjb3VudHMgJT4lIHVubmVzdChjb3VudGRhdGEpICU+JQogIG11dGF0ZShzYW1wbGUgPSBzdHJfcmVtb3ZlKHNhbXBsZSwgIl9MLioiKSkgJT4lIAogIHNlbGVjdChzYW1wbGUsIHRhcmdldF9pZCwgZXN0X2NvdW50cykgJT4lCiAgZ3JvdXBfYnkoc2FtcGxlLCB0YXJnZXRfaWQpICU+JQogIHN1bW1hcml6ZShlc3RfY291bnRzPXN1bShlc3RfY291bnRzKSkgJT4lICMgc3VtIHVwIGNvdW50cyBmcm9tIG11bHRpcGxlIGxhbmVzCiAgdW5ncm91cCgpICU+JQogIHBpdm90X3dpZGVyKGlkX2NvbHMgPSB0YXJnZXRfaWQsCiAgICAgICAgICAgICAgbmFtZXNfZnJvbSA9IHNhbXBsZSwKICAgICAgICAgICAgICB2YWx1ZXNfZnJvbSA9IGVzdF9jb3VudHMpCmBgYAoKYGBge3J9CmhlYWQoY291bnRzKQpkaW0oY291bnRzKQpgYGAKCmBgYHtyfQp3cml0ZV9jc3YoY291bnRzLCIuLi8uLi9vdXRwdXQvMjAxNzA4MzBfVjMuMF9yYXdfY291bnRzXy5jc3YuZ3oiKQpgYGAKCiMjIG1ha2Ugc2FtcGxlIGRlc2NyaXB0aW9uIGRhdGEgZnJhbWUKCmBgYHtyfQpzYW1wbGUuZGVzY3JpcHRpb24gPC0gdGliYmxlKHNhbXBsZT1jb2xuYW1lcyhjb3VudHMpWy0xXSkgJT4lCiAgc2VwYXJhdGUoc2FtcGxlLAogICAgICAgICAgIGMoImxvY2F0aW9uIiwidGlzc3VlIiwiZ2Vub3R5cGUiLCJibG9jayIsInBvdCIsICJzYW1wbGVfaWQiKSwKICAgICAgICAgICByZW1vdmU9RkFMU0UsCiAgICAgICAgICAgY29udmVydD1UUlVFKSAKaGVhZChzYW1wbGUuZGVzY3JpcHRpb24pCgojIyBnZXQgYWRkaXRpb25hbCBtZXRhZGF0YQpzYW1wbGUuaW5mbyA8LSByZWFkeGw6OnJlYWRfZXhjZWwoIi4uLy4uL2lucHV0L3d5MDAxX1JOQXNlcS54bHN4IixzaGVldCA9IDEpCmhlYWQoc2FtcGxlLmluZm8pCgojI2NvbWJpbmUKc2FtcGxlLmRlc2NyaXB0aW9uIDwtIGxlZnRfam9pbihzYW1wbGUuZGVzY3JpcHRpb24sIHNhbXBsZS5pbmZvKQpzYW1wbGUuZGVzY3JpcHRpb24gPC0gc2FtcGxlLmRlc2NyaXB0aW9uICU+JSAKICBtdXRhdGUoZ3JvdXA9cGFzdGUodGlzc3VlLGdlbm90eXBlLHNvaWwsYXV0b2NsYXZlLHNlcD0iXyIpKQpoZWFkKHNhbXBsZS5kZXNjcmlwdGlvbikKc2FtcGxlLmRlc2NyaXB0aW9uICU+JSBzdW1tYXJpemUobl9kaXN0aW5jdChncm91cCkpCmBgYAoKIyMgc3VtbWFyaXplIGNvdW50cwpgYGB7cn0KcGwub3JpZyA8LSBjb3VudHNbLC0xXSAlPiUgY29sU3VtcygpICU+JSB0aWJibGUoc2FtcGxlPW5hbWVzKC4pLGNvdW50PS4pICU+JQogIGdncGxvdChhZXMoeD1zYW1wbGUseT1jb3VudCkpICsgCiAgZ2VvbV9jb2woKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggID0gZWxlbWVudF90ZXh0KGFuZ2xlPTkwLCB2anVzdD0wLjUsc2l6ZSA9IDcpKSAKcGwub3JpZwpgYGAKCiMjIGxvYWQgdG8gZWRnZVIsIG5vcm1hbGl6ZQoKYGBge3J9CiNjb25maXJtIHRoYXQgZXZlcnRoaW5nIGlzIGluIHRoZSByaWdodCBvcmRlcgphbGwoY29sbmFtZXMoY291bnRzKVstMV09PXNhbXBsZS5kZXNjcmlwdGlvbiRzYW1wbGUpCmRnZSA8LSBER0VMaXN0KGNvdW50c1ssLTFdLAogICAgICAgICAgICAgICBncm91cD1zYW1wbGUuZGVzY3JpcHRpb24kZ3JvdXAsCiAgICAgICAgICAgICAgIHNhbXBsZXM9c2FtcGxlLmRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICBnZW5lcz1jb3VudHMkdGFyZ2V0X2lkKQpgYGAKCmBgYHtyfQpkZ2UgPC0gY2FsY05vcm1GYWN0b3JzKGRnZSkKYmFycGxvdChkZ2Ukc2FtcGxlcyRsaWIuc2l6ZSkKZ2dwbG90KGRnZSRzYW1wbGVzLGFlcyh4PXNhbXBsZSx5PW5vcm0uZmFjdG9ycyxmaWxsPXRpc3N1ZSkpICsgZ2VvbV9jb2woKSArIAogIHRoZW1lKGF4aXMudGV4dC54ICA9IGVsZW1lbnRfdGV4dChhbmdsZT05MCwgdmp1c3Q9MC41LHNpemUgPSA3KSkgCmdncGxvdChkZ2Ukc2FtcGxlcyxhZXMoeD1zYW1wbGUseT1ub3JtLmZhY3RvcnMsZmlsbD1nZW5vdHlwZSkpICsgZ2VvbV9jb2woKSArIAogIHRoZW1lKGF4aXMudGV4dC54ICA9IGVsZW1lbnRfdGV4dChhbmdsZT05MCwgdmp1c3Q9MC41LHNpemUgPSA3KSkgCmdncGxvdChkZ2Ukc2FtcGxlcyxhZXMoeD1zYW1wbGUseT1ub3JtLmZhY3RvcnMsZmlsbD1hcy5mYWN0b3IoYmxvY2spKSkgKyBnZW9tX2NvbCgpICsKICB0aGVtZShheGlzLnRleHQueCAgPSBlbGVtZW50X3RleHQoYW5nbGU9OTAsIHZqdXN0PTAuNSxzaXplID0gNykpIApgYGAKCgojIGRvIHNlcGFyYXRlbHkgZm9yIGxlYWYgYW5kIHJvb3QgdmFsdWVzCgpgYGB7cn0KY291bnRzLmxlYWYgPC0gY291bnRzICU+JSBzZWxlY3QodGFyZ2V0X2lkLCBjb250YWlucygibGVhZiIpKQpjb3VudHMucm9vdCA8LSBjb3VudHMgJT4lIHNlbGVjdCh0YXJnZXRfaWQsIGNvbnRhaW5zKCJyb290IikpCnNhbXBsZS5kZXNjcmlwdGlvbi5sZWFmIDwtIHNhbXBsZS5kZXNjcmlwdGlvbiAlPiUgZmlsdGVyKHRpc3N1ZT09ImxlYWYiKQpzYW1wbGUuZGVzY3JpcHRpb24ucm9vdCA8LSBzYW1wbGUuZGVzY3JpcHRpb24gJT4lIGZpbHRlcih0aXNzdWU9PSJyb290IikKYGBgCgpMZWFmCmBgYHtyfQojY29uZmlybSB0aGF0IGV2ZXJ0aGluZyBpcyBpbiB0aGUgcmlnaHQgb3JkZXIKYWxsKGNvbG5hbWVzKGNvdW50cy5sZWFmKVstMV09PXNhbXBsZS5kZXNjcmlwdGlvbi5sZWFmJHNhbXBsZSkKZGdlLmxlYWYgPC0gREdFTGlzdChjb3VudHMubGVhZlssLTFdLAogICAgICAgICAgICAgICAgICAgIGdyb3VwPXNhbXBsZS5kZXNjcmlwdGlvbi5sZWFmJGdyb3VwLAogICAgICAgICAgICAgICAgICAgIHNhbXBsZXM9c2FtcGxlLmRlc2NyaXB0aW9uLmxlYWYsCiAgICAgICAgICAgICAgICAgICAgZ2VuZXM9Y291bnRzLmxlYWYkdGFyZ2V0X2lkKQpkZ2UubGVhZiA8LSBjYWxjTm9ybUZhY3RvcnMoZGdlLmxlYWYpCmBgYAoKUm9vdApgYGB7cn0KI2NvbmZpcm0gdGhhdCBldmVydGhpbmcgaXMgaW4gdGhlIHJpZ2h0IG9yZGVyCmFsbChjb2xuYW1lcyhjb3VudHMucm9vdClbLTFdPT1zYW1wbGUuZGVzY3JpcHRpb24ucm9vdCRzYW1wbGUpCmRnZS5yb290IDwtIERHRUxpc3QoY291bnRzLnJvb3RbLC0xXSwKICAgICAgICAgICAgICAgICAgICBncm91cD1zYW1wbGUuZGVzY3JpcHRpb24ucm9vdCRncm91cCwKICAgICAgICAgICAgICAgICAgICBzYW1wbGVzPXNhbXBsZS5kZXNjcmlwdGlvbi5yb290LAogICAgICAgICAgICAgICAgICAgIGdlbmVzPWNvdW50cy5yb290JHRhcmdldF9pZCkKZGdlLnJvb3QgPC0gY2FsY05vcm1GYWN0b3JzKGRnZS5yb290KQpgYGAKCmBgYHtyfQpzYXZlKGRnZS5sZWFmLGRnZS5yb290LHNhbXBsZS5kZXNjcmlwdGlvbi5sZWFmLHNhbXBsZS5kZXNjcmlwdGlvbi5yb290LGZpbGU9Ii4uLy4uL291dHB1dC9lZGdlUl9kZ2Vfb2JqZWN0c19leHAxX3dlZWs0LlJkYXRhIikKYGBgCgoKIyMgV3JpdGUgb3V0IGNwbSB2YWx1ZXMKCmBgYHtyfQpjcG0ubGVhZi53IDwtIGJpbmRfY29scyhkZ2UubGVhZiRnZW5lLGFzX3RpYmJsZShjcG0oZGdlLmxlYWYpKSkgJT4lIGFzX3RpYmJsZSgpICU+JSByZW5hbWUodHJhbnNjcmlwdF9JRD1nZW5lcykKaGVhZChjcG0ubGVhZi53KQp3cml0ZV9jc3YoY3BtLmxlYWYudywiLi4vLi4vb3V0cHV0L2NwbV93aWRlX2V4cDFfd2VlazRfbGVhZl9zYW1wbGVzLmNzdi5neiIpCmBgYAoKYGBge3J9CmNwbS5yb290LncgPC0gYmluZF9jb2xzKGRnZS5yb290JGdlbmUsYXNfdGliYmxlKGNwbShkZ2Uucm9vdCkpKSAlPiUgYXNfdGliYmxlKCkgJT4lIHJlbmFtZSh0cmFuc2NyaXB0X0lEPWdlbmVzKQpoZWFkKGNwbS5yb290LncpCndyaXRlX2NzdihjcG0ucm9vdC53LCIuLi8uLi9vdXRwdXQvY3BtX3dpZGVfZXhwMV93ZWVrNF9yb290X3NhbXBsZXMuY3N2Lmd6IikKYGBgCgoKQWxzbyBsZXQncyByZWZvcm1hdCB0aGlzIHRvIGxvbmcgZm9ybWF0IGFuZCBhZGQgbWV0YWRhdGEKCmBgYHtyfQpjcG0ubGVhZi5sb25nIDwtIGNwbS5sZWFmLncgJT4lIAogIGdhdGhlcigtdHJhbnNjcmlwdF9JRCxrZXkgPSBzYW1wbGUsdmFsdWU9Y3BtKSAlPiUKICBsZWZ0X2pvaW4oc2FtcGxlLmRlc2NyaXB0aW9uLmxlYWYpCmhlYWQoY3BtLmxlYWYubG9uZykKd3JpdGVfY3N2KGNwbS5sZWFmLmxvbmcsIi4uLy4uL291dHB1dC9jcG1fbG9uZ193aXRoX21ldGFkYXRhX2V4cDFfd2VlazRfbGVhZl9zYW1wbGVzLmNzdi5neiIpCmBgYAoKYGBge3J9CmNwbS5yb290LmxvbmcgPC0gY3BtLnJvb3QudyAlPiUgCiAgZ2F0aGVyKC10cmFuc2NyaXB0X0lELGtleSA9IHNhbXBsZSx2YWx1ZT1jcG0pICU+JQogIGxlZnRfam9pbihzYW1wbGUuZGVzY3JpcHRpb24ucm9vdCkKaGVhZChjcG0ucm9vdC5sb25nKQp3cml0ZV9jc3YoY3BtLnJvb3QubG9uZywiLi4vLi4vb3V0cHV0L2NwbV9sb25nX3dpdGhfbWV0YWRhdGFfZXhwMV93ZWVrNF9yb290X3NhbXBsZXMuY3N2Lmd6IikKYGBgCgoKIyMgY29tcHV0ZSBhbmQgd3JpdGUgb3V0IHZvb20tdHJhbnNmb3JtZWQgdmFsdWVzCgpgYGB7cn0KZGVzaWduLmxlYWYgPC0gbW9kZWwubWF0cml4KH4gc2FtcGxlLmRlc2NyaXB0aW9uLmxlYWYkZ3JvdXApCmRnZTR2b29tLmxlYWYgPC0gZGdlLmxlYWZbcm93U3VtcyhjcG0oZGdlLmxlYWYpPjEpID49IDYsLGtlZXAubGliLnNpemVzPUZBTFNFXQpkZ2U0dm9vbS5sZWFmIDwtIGNhbGNOb3JtRmFjdG9ycyhkZ2U0dm9vbS5sZWFmKQpkYXRhLnZvb20ubGVhZiA8LSB2b29tKGRnZTR2b29tLmxlYWYsZGVzaWduID0gZGVzaWduLmxlYWYpCmRhdGEudm9vbS5leHAubGVhZiA8LSBiaW5kX2NvbHMoZGF0YS52b29tLmxlYWYkZ2VuZXMsYXNfdGliYmxlKGRhdGEudm9vbS5sZWFmJEUpKSAlPiUKICByZW5hbWUodHJhbnNjcmlwdF9JRD1nZW5lcykgJT4lIGFzX3RpYmJsZSgpCmhlYWQoZGF0YS52b29tLmV4cC5sZWFmKQp3cml0ZV9jc3YoZGF0YS52b29tLmV4cC5sZWFmLCAiLi4vLi4vb3V0cHV0L3Zvb21fZXhwcmVzc2lvbl9leHAxX3dlZWs0X1Q2X2xlYWZfc2FtcGxlcy5jc3YuZ3oiKQpgYGAKCgpgYGB7cn0Kdm9vbS5sb25nLmxlYWYgPC0gZGF0YS52b29tLmV4cC5sZWFmICU+JSAKICBnYXRoZXIoLXRyYW5zY3JpcHRfSUQsa2V5ID0gc2FtcGxlLHZhbHVlPWV4cHJlc3Npb24pICU+JQogIGxlZnRfam9pbihzYW1wbGUuZGVzY3JpcHRpb24ubGVhZikKaGVhZCh2b29tLmxvbmcubGVhZikKaGlzdCh2b29tLmxvbmcubGVhZiRleHByZXNzaW9uKQp3cml0ZV9jc3Yodm9vbS5sb25nLmxlYWYsIi4uLy4uL291dHB1dC92b29tX2xvbmdfd2l0aF9tZXRhZGF0YV9leHAxX3dlZWs0X1Q2X2xlYWZfc2FtcGxlcy5jc3YuZ3oiKQpgYGAKCgpgYGB7cn0KZGVzaWduLnJvb3QgPC0gbW9kZWwubWF0cml4KH4gc2FtcGxlLmRlc2NyaXB0aW9uLnJvb3QkZ3JvdXApCmRnZTR2b29tLnJvb3QgPC0gZGdlLnJvb3Rbcm93U3VtcyhjcG0oZGdlLnJvb3QpPjEpID49IDYsLGtlZXAubGliLnNpemVzPUZBTFNFXQpkZ2U0dm9vbS5yb290IDwtIGNhbGNOb3JtRmFjdG9ycyhkZ2U0dm9vbS5yb290KQpkYXRhLnZvb20ucm9vdCA8LSB2b29tKGRnZTR2b29tLnJvb3QsZGVzaWduID0gZGVzaWduLnJvb3QpCmRhdGEudm9vbS5leHAucm9vdCA8LSBiaW5kX2NvbHMoZGF0YS52b29tLnJvb3QkZ2VuZXMsYXNfdGliYmxlKGRhdGEudm9vbS5yb290JEUpKSAlPiUKICByZW5hbWUodHJhbnNjcmlwdF9JRD1nZW5lcykgJT4lIGFzX3RpYmJsZSgpCmhlYWQoZGF0YS52b29tLmV4cC5yb290KQp3cml0ZV9jc3YoZGF0YS52b29tLmV4cC5yb290LCAiLi4vLi4vb3V0cHV0L3Zvb21fZXhwcmVzc2lvbl9leHAxX3dlZWs0X1Q2X3Jvb3Rfc2FtcGxlcy5jc3YuZ3oiKQpgYGAKCgpgYGB7cn0Kdm9vbS5sb25nLnJvb3QgPC0gZGF0YS52b29tLmV4cC5yb290ICU+JSAKICBnYXRoZXIoLXRyYW5zY3JpcHRfSUQsa2V5ID0gc2FtcGxlLHZhbHVlPWV4cHJlc3Npb24pICU+JQogIGxlZnRfam9pbihzYW1wbGUuZGVzY3JpcHRpb24ucm9vdCkKaGVhZCh2b29tLmxvbmcucm9vdCkKaGlzdCh2b29tLmxvbmcucm9vdCRleHByZXNzaW9uKQp3cml0ZV9jc3Yodm9vbS5sb25nLnJvb3QsIi4uLy4uL291dHB1dC92b29tX2xvbmdfd2l0aF9tZXRhZGF0YV9leHAxX3dlZWs0X1Q2X3Jvb3Rfc2FtcGxlcy5jc3YuZ3oiKQpgYGAK